#ifndef OLED_SSD1306_H
#define OLED_SSD1306_H

#include <QObject>
#include <QWidget>

class OLED_SSD1306 : public QObject{
    Q_OBJECT
private:
    unsigned char deviceAddress;                                // 设备地址
    unsigned char commandReg;                                   // 命令寄存器
    unsigned char dataReg;                                      // 数据寄存器
    uint8_t OLED_Buffer[8][128];                                // 图像缓存

public:
    explicit OLED_SSD1306(QObject *parent = nullptr);           //构造函数

    void setDeviceAddress(unsigned char deviceAddress);         // 设置屏幕的I2C地址F
    void setCommandReg(unsigned char commandReg);               // 设置屏幕写命令的寄存器地址
    void setDataReg(unsigned char DataReg);                     // 设置屏幕写数据的寄存器地址
    void OLED_Init();                                           // 屏幕初始化
    void OLED_WriteCommand(unsigned char commandReg);           //向屏幕写命令
    void OLED_WriteData(unsigned char dataReg);                 // 写屏幕数据
    void OLED_Clear(unsigned char color);                       // 清屏 颜色 0：黑屏 1：白屏
    void OLED_SetCursor(uint8_t Y, uint8_t X);
    void OLED_SetPixel(uint8_t x, uint8_t y);                   // 设置像素点
    void OLED_NewFrame();                                       // 新的一帧数据
    void OLED_ShowFrame();                                      // 将图像缓存显示到屏幕上
    void OLED_DrawCircle(uint16_t x0, uint16_t y0, uint8_t r);   // 画圆

signals:

};

#endif // OLED_SSD1306_H
